package io.exercise;
//递归
//啤酒问题：每个啤酒两块四个盖子能换一个,两个瓶子能换一个

public class Beer {
    public static int allnumber ;//总瓶子数目
    public static int covernumer;//剩余盖子数目
    public static int bottlenumber;//剩余瓶子数目
    public static void main(String[] args) {
    buy(10);
        System.out.println("总数"+allnumber);
        System.out.println("剩余盖子"+covernumer);
        System.out.println("剩余瓶子"+bottlenumber);
    }
    public static void buy(int money)
    {
        //总金钱来买酒向下取整
       int number =money/2;
       allnumber+=number;//把买到的计入总数
        //全部的盖子等于买酒的盖子+以前的盖子
       int allcover =number+ covernumer;
       //全部的瓶子等于以前的瓶子加买酒的瓶子
       int allbottle=number+bottlenumber;
       //自定义一个递归数来计算下一轮    因为需要把换酒得到的瓶子盖子计入下一次循环所以要把他们换算成钱，否则盖子和瓶子换到酒后的瓶子盖子不会计入
        int numbers=0;
        //盖子大于4开换
       if (allcover >=4)
       {
         allnumber+= allcover /4;//换到的计入总数
           numbers=(allcover/4)*2;//换算成钱
       }
        covernumer=allcover%4;//取余来统计剩下的盖子
       if (allbottle>=2)
       {
           allnumber+=allbottle/2;
          numbers= (allbottle/2)*2;
       }
        bottlenumber=allbottle%2;

        if(covernumer>=4||allbottle>=2)//也可以是（numbers>2），意思是如果剩下的瓶盖大于四或者瓶子大于二进入下一轮

        {
            buy(numbers);
        }






    }
}
